package chapter1.com.sky;

import java.util.HashMap;

/**
 * @author : wushikai
 * <p>
 * date : 2021-03-15
 */
public class LongDemo {


    /**
     * 将整型数字转换为二进制字符串，一共32位，不舍弃前面的0
     *
     * @param number 整型数字
     * @return 二进制字符串
     */
    public static String get64BitBinString(long number) {
        StringBuilder sBuilder = new StringBuilder();
        for (int i = 0; i < 64; i++) {
            sBuilder.append(number & 1);
            if ((i + 1) % 4 == 0) {
                sBuilder.append(" ");
            }
            number = number >>> 1;
        }
        return sBuilder.reverse().toString();
    }


    /*
     * 入参 : 3   0000 0000 0000  0000 0011
     * 输出  第一位 1  第二位 1 第三位 0   即返回一个map<int param1, int param2 >  param1 属于 [1, 63]  param2 属于 [ 1, 0]
     * */
    public static void main(String[] args) {


        System.out.println(get64BitBinString(Long.MAX_VALUE));

        Long temp = Long.MAX_VALUE;

    }

    /**
     * 标签获取;
     * 在有  这种模型 仅限于 n(n<64) 对 大n(999+)
     * */
    public static HashMap<Integer, Integer> getLabelMap(long l) {


        HashMap<Integer, Integer> map = new HashMap<>();
        for (int i = 63; i >= 0; i--) {

            long t = l & (1L << i);

            if (t > 0) {
                map.put(i + 1, 1);
            } else {
                map.put(i + 1, 0);
            }
        }

        return map;

    }

}
